package telas.fornecedor;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import javax.swing.JTabbedPane;
import java.awt.SystemColor;
import javax.swing.JLabel;
import java.awt.Font;

import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JTextArea;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
import javax.swing.text.MaskFormatter;
import javax.swing.ImageIcon;

import modelo.Fachada;
import modelo.fornecedor.Fornecedor;

import controle.fornecedor.ControleFornecedor;
import controle.fornecedor.ControleFornecedorSwing;
import controle.produto.ControleProduto;
import controle.produto.ControleProdutoSwing;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class TelaFornecedor extends JFrame {

	private JButton btnExcluirFornecedor_1;
	private JButton btnEditarFornecedor;
	private JPanel contentPane;
	
	private JTextField tfTelefone;	
	private JTextField tfNomeFantasia;
	private JTextField tfNomeRepresentante;
	private JTextField tfEmail;
	private JTextField tfCidade;
	private JTextField tfBuscarFornecedor;
	private JTable table;
	private JButton btnSalvarDados;
	private JButton btnLimparDados;
	private JButton btnAlterarDados;
	private JButton btnBusacar;
	private JButton btnLimparBusca;
	private JComboBox cbxEstado;
	private JTextArea taObservacoes;
	private boolean novoFornecedor = true;
	private FornecedorTableModel model;
	private Fornecedor fornecedorSelecionado;
	private JTabbedPane tabbedPane;
	private JPanel pnlCadastrarFornecedor;
	private JPanel pnlListar;
	private TableRowSorter<FornecedorTableModel> sorter;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					TelaFornecedor frame = new TelaFornecedor();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public TelaFornecedor() {
		super("Fornecedor");
		setResizable(false);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 800, 600);
		setVisible(true);
		setLocationRelativeTo(null);
		
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		tabbedPane = new JTabbedPane(JTabbedPane.TOP);
		tabbedPane.setBounds(0, 122, 794, 450);
		contentPane.add(tabbedPane);
		
		pnlCadastrarFornecedor = new JPanel();
		pnlCadastrarFornecedor.setBackground(SystemColor.controlHighlight);
		tabbedPane.addTab("Cadastrar Fornecedor", null, pnlCadastrarFornecedor, null);
		pnlCadastrarFornecedor.setLayout(null);
				
		JLabel lblCadastrarDadosFornecedor = new JLabel("Cadastrar Dados do Fornecedor");
		lblCadastrarDadosFornecedor.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblCadastrarDadosFornecedor.setBounds(10, 11, 404, 19);
		pnlCadastrarFornecedor.add(lblCadastrarDadosFornecedor);
		
		JLabel lblNomeFantasia = new JLabel("Nome Fantasia");
		lblNomeFantasia.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblNomeFantasia.setBounds(10, 41, 234, 15);
		pnlCadastrarFornecedor.add(lblNomeFantasia);
		
		tfNomeFantasia = new JTextField();
		tfNomeFantasia.setColumns(10);
		tfNomeFantasia.setBounds(10, 56, 449, 20);
		pnlCadastrarFornecedor.add(tfNomeFantasia);
	
		JLabel lblNomeRepresentante = new JLabel("Nome do Representante");
		lblNomeRepresentante.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblNomeRepresentante.setBounds(469, 42, 310, 15);
		pnlCadastrarFornecedor.add(lblNomeRepresentante);
		
		tfNomeRepresentante = new JTextField();
		tfNomeRepresentante.setColumns(10);
		tfNomeRepresentante.setBounds(469, 56, 310, 20);
		pnlCadastrarFornecedor.add(tfNomeRepresentante);
		
		JLabel lblTelefone = new JLabel("Telefone");
		lblTelefone.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblTelefone.setBounds(10, 87, 102, 15);
		pnlCadastrarFornecedor.add(lblTelefone);
		
		tfTelefone = new JTextField();
		tfTelefone.setColumns(10);
		tfTelefone.setBounds(10, 101, 102, 20);
		pnlCadastrarFornecedor.add(tfTelefone);
		
		JLabel lblEmail = new JLabel("E-mail");
		lblEmail.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblEmail.setBounds(124, 87, 179, 15);
		pnlCadastrarFornecedor.add(lblEmail);
		
		tfEmail = new JTextField();
		tfEmail.setColumns(10);
		tfEmail.setBounds(124, 101, 179, 20);
		pnlCadastrarFornecedor.add(tfEmail);
		
		JLabel lblCidade = new JLabel("Cidade");
		lblCidade.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblCidade.setBounds(469, 87, 51, 15);
		pnlCadastrarFornecedor.add(lblCidade);
		
		cbxEstado = new JComboBox();
		cbxEstado.setModel(new DefaultComboBoxModel(new String[] {"Acre - AC", "Alagoas - AL", "Amap\u00E1 - AP", "Amazonas - AM", "Bahia  - BA", "Cear\u00E1 - CE", "Distrito Federal  - DF", "Esp\u00EDrito Santo - ES", "Goi\u00E1s - GO", "Maranh\u00E3o - MA", "Mato Grosso - MT", "Mato Grosso do Sul - MS", "Minas Gerais - MG", "Par\u00E1 - PA", "Para\u00EDba - PB", "Paran\u00E1 - PR", "Pernambuco - PE", "Piau\u00ED - PI", "Rio de Janeiro - RJ", "Rio Grande do Norte - RN", "Rio Grande do Sul - RS", "Rond\u00F4nia - RO", "Roraima - RR", "Santa Catarina - SC", "S\u00E3o Paulo - SP", "Sergipe - SE", "Tocantins - TO"}));
		cbxEstado.setBounds(313, 101, 146, 20);
		pnlCadastrarFornecedor.add(cbxEstado);
		
		tfCidade = new JTextField();
		tfCidade.setColumns(10);
		tfCidade.setBounds(469, 101, 310, 20);
		pnlCadastrarFornecedor.add(tfCidade);
		
		JLabel lblEstado = new JLabel("Estado");
		lblEstado.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblEstado.setBounds(313, 87, 146, 15);
		pnlCadastrarFornecedor.add(lblEstado);
		
		JLabel lblObservacoes = new JLabel("Observa\u00E7\u00F5es");
		lblObservacoes.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblObservacoes.setBounds(10, 132, 74, 15);
		pnlCadastrarFornecedor.add(lblObservacoes);
		
		taObservacoes = new JTextArea();
		taObservacoes.setBackground(SystemColor.info);
		taObservacoes.setBounds(10, 148, 769, 102);
		pnlCadastrarFornecedor.add(taObservacoes);
		
		btnSalvarDados = new JButton("Salvar Dados");
		btnSalvarDados.addActionListener(new ControleFornecedorSwing(this, new ControleFornecedor()));
		btnSalvarDados.setIcon(new ImageIcon(TelaFornecedor.class.getResource("/telas/sistema/figuras/disk.png")));
		btnSalvarDados.setBounds(10, 388, 145, 23);
		pnlCadastrarFornecedor.add(btnSalvarDados);
		
		JButton btnLimparDados = new JButton("Limpar Dados");
		btnLimparDados.setIcon(new ImageIcon(TelaFornecedor.class.getResource("/telas/sistema/figuras/bullet_page_white.png")));
		btnLimparDados.setBounds(165, 388, 145, 23);
		pnlCadastrarFornecedor.add(btnLimparDados);
		
		pnlListar = new JPanel();
		pnlListar.setBackground(SystemColor.controlHighlight);
		tabbedPane.addTab("Listar Fornecedores", null, pnlListar, null);
		pnlListar.setLayout(null);
				
		tabbedPane.addChangeListener(new ControleFornecedorSwing(this, new ControleFornecedor()));
		
		JLabel lblListarFornecedoresCadastrados = new JLabel("Listar Fornecedores Cadastrados");
		lblListarFornecedoresCadastrados.setFont(new Font("Tahoma", Font.BOLD, 18));
		lblListarFornecedoresCadastrados.setBounds(10, 11, 306, 19);
		pnlListar.add(lblListarFornecedoresCadastrados);
		
		JLabel lblNomeFornecedor = new JLabel("Nome do Fornecedor");
		lblNomeFornecedor.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblNomeFornecedor.setBounds(10, 41, 142, 14);
		pnlListar.add(lblNomeFornecedor);
		
		tfBuscarFornecedor = new JTextField();
		tfBuscarFornecedor.setColumns(10);
		tfBuscarFornecedor.setBounds(10, 55, 459, 20);
		pnlListar.add(tfBuscarFornecedor);
		
		JButton btnBusacar = new JButton("Buscar");
		btnBusacar.setIcon(new ImageIcon(TelaFornecedor.class.getResource("/telas/sistema/figuras/zoom.png")));
		btnBusacar.setBounds(479, 54, 145, 23);
		pnlListar.add(btnBusacar);
		
		JButton btnLimparBusca = new JButton("Limpar Busca");
		btnLimparBusca.setIcon(new ImageIcon(TelaFornecedor.class.getResource("/telas/sistema/figuras/bullet_page_white.png")));
		btnLimparBusca.setBounds(634, 54, 145, 23);
		pnlListar.add(btnLimparBusca);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(10, 86, 769, 290);
		pnlListar.add(scrollPane);
		
		model = new FornecedorTableModel();
//		model.addListaDeFornecedor(Fachada.getListAllFornecedor());
		sorter = new TableRowSorter<FornecedorTableModel>(model);
		table = new JTable(model);
		table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		table.setBackground(SystemColor.info);
		table.setAutoCreateRowSorter(true);
		table.setRowSorter(sorter);
		table.addKeyListener(new ControleFornecedorSwing(this, new ControleFornecedor()));
		//		table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		DefaultTableCellRenderer centralizado = new DefaultTableCellRenderer();  
		centralizado.setHorizontalAlignment(SwingConstants.CENTER); 
		//		centralizado.setBackground(Color.RED);
		table.getColumnModel().getColumn(0).setPreferredWidth(60);
		table.getColumnModel().getColumn(0).setCellRenderer(centralizado);
		table.getColumnModel().getColumn(1).setCellRenderer(centralizado);
		table.getColumnModel().getColumn(1).setPreferredWidth(500);
		table.getColumnModel().getColumn(2).setCellRenderer(centralizado);
		table.getColumnModel().getColumn(2).setPreferredWidth(80);
		table.getColumnModel().getColumn(3).setCellRenderer(centralizado);
		table.getColumnModel().getColumn(3).setPreferredWidth(80);
		
		scrollPane.setViewportView(table);
		
		btnEditarFornecedor = new JButton("Editar Fornecedor");
		btnEditarFornecedor.setIcon(new ImageIcon(TelaFornecedor.class.getResource("/telas/sistema/figuras/page_edit.png")));
		btnEditarFornecedor.setBounds(10, 388, 164, 23);
		btnEditarFornecedor.addActionListener(new ControleFornecedorSwing(this,new ControleFornecedor()));
		pnlListar.add(btnEditarFornecedor);
		
		btnAlterarDados = new JButton("Alterar Dados");
		btnAlterarDados.setBounds(10, 479, 128, 23);
		pnlListar.add(btnAlterarDados);
		
		btnExcluirFornecedor_1 = new JButton(" Excluir Fornecedor");
		btnExcluirFornecedor_1.setIcon(new ImageIcon(TelaFornecedor.class.getResource("/telas/sistema/figuras/bullet_cross.png")));
		btnExcluirFornecedor_1.setBounds(186, 386, 164, 26);
		btnExcluirFornecedor_1.addActionListener(new ControleFornecedorSwing(this, new ControleFornecedor()));
		pnlListar.add(btnExcluirFornecedor_1);
		
		JLabel logo = new JLabel("");
		logo.setIcon(new ImageIcon(TelaFornecedor.class.getResource("/telas/sistema/figuras/logo.com.fundo.png")));
		logo.setBounds(0, 0, 794, 144);
		contentPane.add(logo);
		
	}

	public JButton getBtnExcluirFornecedor_1() {
		return btnExcluirFornecedor_1;
	}

	public JButton getBtnEditarFornecedor() {
		return btnEditarFornecedor;
	}
	
	public JComboBox getCbxEstado() {
		return cbxEstado;
	}

	public JTextField getTfNomeFantasia() {
		return tfNomeFantasia;
	}

	public void setTfNomeFantasia(JTextField tfNomeFantasia) {
		this.tfNomeFantasia = tfNomeFantasia;
	}

	public JTextField getTfNomeRepresentante() {
		return tfNomeRepresentante;
	}

	public void setTfNomeRepresentante(JTextField tfNomeRepresentante) {
		this.tfNomeRepresentante = tfNomeRepresentante;
	}

	public JTextField getTfTelefone() {
		return tfTelefone;
	}

	public void setTfTelefone(JFormattedTextField tfTelefone) {
		this.tfTelefone = tfTelefone;
	}

	public JTextField getTfEmail() {
		return tfEmail;
	}

	public void setTfEmail(JTextField tfEmail) {
		this.tfEmail = tfEmail;
	}

	public JTextField getTfCidade() {
		return tfCidade;
	}

	public void setTfCidade(JTextField tfCidade) {
		this.tfCidade = tfCidade;
	}

	public JTextField getTfNomeFornecedor() {
		return tfBuscarFornecedor;
	}

	public void setTfNomeFornecedor(JTextField tfNomeFornecedor) {
		this.tfBuscarFornecedor = tfNomeFornecedor;
	}

	public JButton getBtnSalvarDados() {
		return btnSalvarDados;
	}

	public void setBtnSalvarDados(JButton btnSalvarDados) {
		this.btnSalvarDados = btnSalvarDados;
	}

	public JButton getBtnLimparDados() {
		return btnLimparDados;
	}

	public void setBtnLimparDados(JButton btnLimparDados) {
		this.btnLimparDados = btnLimparDados;
	}

	public JButton getBtnAlterarDados() {
		return btnAlterarDados;
	}

	public void setBtnAlterarDados(JButton btnAlterarDados) {
		this.btnAlterarDados = btnAlterarDados;
	}

	public JButton getBtnBusacar() {
		return btnBusacar;
	}

	public void setBtnBusacar(JButton btnBusacar) {
		this.btnBusacar = btnBusacar;
	}

	public JButton getBtnLimparBusca() {
		return btnLimparBusca;
	}

	public void setBtnLimparBusca(JButton btnLimparBusca) {
		this.btnLimparBusca = btnLimparBusca;
	}

	public JTabbedPane getTabbedPane() {
		return tabbedPane;
	}

	public JPanel getPnlCadastrarEditar() {
		return pnlCadastrarFornecedor;
	}

	public JPanel getPnlListar() {
		return pnlListar;
	}
	
	public boolean isNovoFornecedor() {
		return novoFornecedor;
	}

	public void setNovoFornecedor(boolean novoFornecedor) {
		this.novoFornecedor = novoFornecedor;
	}

	public JTable getTable() {
		return table;
	}
	
	public Fornecedor getFornecedorSelecionado() {
		return fornecedorSelecionado;
	}

	public void setFornecedorSelecionado(Fornecedor fornecedorSelecionado) {
		this.fornecedorSelecionado = fornecedorSelecionado;
		this.tfNomeFantasia.setText(fornecedorSelecionado.getNomeFantasia());
		this.tfNomeRepresentante.setText(fornecedorSelecionado.getNomeRepresentante());
		this.tfCidade.setText(fornecedorSelecionado.getEndereco().getCidade());
		this.tfEmail.setText(fornecedorSelecionado.getEmail());
		this.tfTelefone.setText(fornecedorSelecionado.getTelefoneContato());
	}

	public FornecedorTableModel getModel() {
		return model;
	}

	public JTextArea getTaObservacoes() {
		return taObservacoes;
	}

	
	public JPanel getPanelAddEdit() {
		return pnlCadastrarFornecedor;
	}
	
	public void resetTela() {
		tfCidade.setText("");
		tfEmail.setText("");
		tfNomeFantasia.setText("");
		tfNomeRepresentante.setText("");
		tfTelefone.setText("");

	}
	
	public JTextField getTfBuscarFornecedor() {
		return tfBuscarFornecedor;
	}
}
